package com.tg.appcommon.android;

import android.content.Context;
import android.widget.EditText;
import android.widget.Toast;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PwdCheckUtil {

  /**
   * 规则1：至少包含大小写字母及数字中的一种
   * 是否包含
   *
   * @param str
   * @return
   */
  public static boolean isLetterOrDigit(String str) {
    boolean isLetterOrDigit = false;//定义一个boolean值，用来表示是否包含字母或数字
    for (int i = 0; i < str.length(); i++) {
      if (Character.isLetterOrDigit(str.charAt(i))) {   //用char包装类中的判断数字的方法判断每一个字符
        isLetterOrDigit = true;
      }
    }
    String regex = "^[a-zA-Z0-9]+$";
    boolean isRight = isLetterOrDigit && str.matches(regex);
    return isRight;
  }

  /**
   * 规则2：至少包含大小写字母及数字中的两种
   * 是否包含
   *
   * @param str
   * @return
   */
  public static boolean isLetterDigit(String str) {
    boolean isDigit = false;//定义一个boolean值，用来表示是否包含数字
    boolean isLetter = false;//定义一个boolean值，用来表示是否包含字母
    for (int i = 0; i < str.length(); i++) {
      if (Character.isDigit(str.charAt(i))) {   //用char包装类中的判断数字的方法判断每一个字符
        isDigit = true;
      } else if (Character.isLetter(str.charAt(i))) {  //用char包装类中的判断字母的方法判断每一个字符
        isLetter = true;
      }
    }
    String regex = "^[a-zA-Z0-9]+$";
    boolean isRight = isDigit && isLetter && str.matches(regex);
    return isRight;
  }

  /**
   * 规则3：必须同时包含大小写字母及数字
   * 是否包含
   *
   * @param str
   * @return
   */
  public static boolean isContainAll(String str) {
    boolean isDigit = false;//定义一个boolean值，用来表示是否包含数字
    boolean isLowerCase = false;//定义一个boolean值，用来表示是否包含字母
    boolean isUpperCase = false;
    for (int i = 0; i < str.length(); i++) {
      if (Character.isDigit(str.charAt(i))) {   //用char包装类中的判断数字的方法判断每一个字符
        isDigit = true;
      } else if (Character.isLowerCase(str.charAt(i))) {  //用char包装类中的判断字母的方法判断每一个字符
        isLowerCase = true;
      } else if (Character.isUpperCase(str.charAt(i))) {
        isUpperCase = true;
      }
    }
    String regex = "^[a-zA-Z0-9]+$";
    boolean isRight = isDigit && isLowerCase && isUpperCase && str.matches(regex);
    return isRight;
  }

  /**
   *   判断EditText输入的数字、中文还是字母方法
   */
  public static void whatIsInput(Context context, EditText edInput) {
    String txt = edInput.getText().toString();

    Pattern p = Pattern.compile("[0-9]*");
    Matcher m = p.matcher(txt);
    if (m.matches()) {
      Toast.makeText(context, "输入的是数字", Toast.LENGTH_SHORT).show();
    }
    p = Pattern.compile("[a-zA-Z]");
    m = p.matcher(txt);
    if (m.matches()) {
      Toast.makeText(context, "输入的是字母", Toast.LENGTH_SHORT).show();
    }
    p = Pattern.compile("[\u4e00-\u9fa5]");
    m = p.matcher(txt);
    if (m.matches()) {
      Toast.makeText(context, "输入的是汉字", Toast.LENGTH_SHORT).show();
    }
  }
}